'use strict';

const Command = require('@jay-cli-dev/command');
const log = require('@jay-cli-dev/log');
const fs = require('fs');

class InitCommand extends Command {
    init() {
        this.projectname = this._argv[0] || '';
        let options = this._argv[1] || {};
        log.verbose('projectname', this.projectname);
        log.verbose('force', options.force);
    }
    exec() {
        try {
            // 1. 准备阶段
            this.prepare();

            // 2. 下载模板
            // 3. 安装模板
        } catch (e) {
            log.error(e)
        }
    }
    prepare() {
        // 1. 判断当前目录是否为空
        if (this.checkCwdEmpty()) {
            // 1.1 询问是否继续创建
            
        }
        // 2. 是否启动强制更新
        // 3. 选择创建项目或组件
        // 4. 获取项目的基本信息
    }

    checkCwdEmpty() {
        const localPath = process.cwd(); // 或path.resolve('.')，但不能用__dirname
        let fileList = fs.readdirSync(localPath) || [];
        fileList = fileList.filter(file => {
            return !file.startsWith('.') && ['node_modules'].indexOf(file) < 0;
        });
        return fileList.length <= 0;
    }
}

function init(argv) {
    return new InitCommand(argv);
}

module.exports = init;
module.exports.InitCommand = InitCommand;